iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
自我挑戰組

30 天 Node.js 探索:基礎、進階與實踐系列 第 28

Day 28: 設定儲蓄目標與提醒功能

  • 分享至 

  • xImage
  •  

今天將添加一個儲蓄目標的功能,讓使用者可以設定他們的財務目標,像是存錢計畫,並且在接近目標截止日期時,應用會提供提醒。

新增目標資料模型

首先需要為儲蓄目標設置一個資料模型,儲存目標金額、當前儲蓄、截止日期等資訊。

js
const mongoose = require('mongoose');

const goalSchema = new mongoose.Schema({
  userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
  amount: { type: Number, required: true },
  currentSavings: { type: Number, default: 0 },
  deadline: { type: Date, required: true }
});

module.exports = mongoose.model('Goal', goalSchema);

實作儲蓄目標的路由與功能

新增目標的路由

在 routes 中新增一個路由,允許使用者設定和查看儲蓄目標。

js
const express = require('express');
const router = express.Router();
const { setSavingGoal, getGoals } = require('../controllers/goalController');

router.post('/goals', setSavingGoal);
router.get('/goals', getGoals);

module.exports = router;

儲蓄目標的控制器

接著要撰寫儲蓄目標的控制器來處理目標設定和查詢邏輯。

js
const Goal = require('../models/Goal');

const setSavingGoal = async (req, res) => {
  const { amount, deadline } = req.body;
  try {
    const goal = new Goal({
      userId: req.user.id,
      amount,
      deadline
    });
    await goal.save();
    res.status(201).json(goal);
  } catch (error) {
    res.status(500).json({ message: 'Error setting saving goal', error });
  }
};

const getGoals = async (req, res) => {
  try {
    const goals = await Goal.find({ userId: req.user.id });
    res.status(200).json(goals);
  } catch (error) {
    res.status(500).json({ message: 'Error retrieving goals', error });
  }
};

module.exports = { setSavingGoal, getGoals };

提醒功能的設置

實作提醒邏輯

使用 node-cron 或類似的排程工具來實現儲蓄目標的定時提醒功能。
安裝 node-cron:

bash
npm install node-cron

用戶可以透過 /goals 路由設定儲蓄目標。讓應用每次登錄或定期檢查是否有目標即將到期,並通過電子郵件或應用通知提醒用戶。
使用 node-cron 來實作定時任務,定期檢查目標到期情況:

js
cron.schedule('0 9 * * *', async () => {
  const goals = await Goal.find();
  goals.forEach(goal => {
    if (goal.deadline - Date.now() < 7 * 24 * 60 * 60 * 1000) {
      console.log(`Reminder: Your savings goal is approaching its deadline.`);
    }
  });
});

總結

今天把應用添加了儲蓄目標與提醒功能,這讓使用者可以設定他們的財務目標,並接收即將到期的提醒,從而促進更高效的財務規劃。這個功能可以讓應用更具互動性和實用性,有助於激勵用戶完成儲蓄目標。


上一篇
Day 27: 報表生成與數據圖表顯示
下一篇
Day 29: 部署至 Heroku
系列文
30 天 Node.js 探索:基礎、進階與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言